/**
 * <copyright>
 * </copyright>
 *

 */
package br.ufrn.dimap.processDsl.impl;

import br.ufrn.dimap.processDsl.Activity;
import br.ufrn.dimap.processDsl.Artifact;
import br.ufrn.dimap.processDsl.ArtifactElement;
import br.ufrn.dimap.processDsl.CheckItem;
import br.ufrn.dimap.processDsl.Checklist;
import br.ufrn.dimap.processDsl.Concept;
import br.ufrn.dimap.processDsl.Discipline;
import br.ufrn.dimap.processDsl.Example;
import br.ufrn.dimap.processDsl.Guideline;
import br.ufrn.dimap.processDsl.Iteration;
import br.ufrn.dimap.processDsl.Model;
import br.ufrn.dimap.processDsl.Phase;
import br.ufrn.dimap.processDsl.Practice;
import br.ufrn.dimap.processDsl.ProcessDslFactory;
import br.ufrn.dimap.processDsl.ProcessDslPackage;
import br.ufrn.dimap.processDsl.Reference;
import br.ufrn.dimap.processDsl.Report;
import br.ufrn.dimap.processDsl.Roadmap;
import br.ufrn.dimap.processDsl.Role;
import br.ufrn.dimap.processDsl.RoleElement;
import br.ufrn.dimap.processDsl.Step;
import br.ufrn.dimap.processDsl.Task;
import br.ufrn.dimap.processDsl.Template;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EFactoryImpl;

import org.eclipse.emf.ecore.plugin.EcorePlugin;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Factory</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class ProcessDslFactoryImpl extends EFactoryImpl implements ProcessDslFactory
{
  /**
   * Creates the default factory implementation.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public static ProcessDslFactory init()
  {
    try
    {
      ProcessDslFactory theProcessDslFactory = (ProcessDslFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.ufrn.br/dimap/ProcessDsl"); 
      if (theProcessDslFactory != null)
      {
        return theProcessDslFactory;
      }
    }
    catch (Exception exception)
    {
      EcorePlugin.INSTANCE.log(exception);
    }
    return new ProcessDslFactoryImpl();
  }

  /**
   * Creates an instance of the factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ProcessDslFactoryImpl()
  {
    super();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public EObject create(EClass eClass)
  {
    switch (eClass.getClassifierID())
    {
      case ProcessDslPackage.MODEL: return createModel();
      case ProcessDslPackage.PROCESS: return createProcess();
      case ProcessDslPackage.DISCIPLINE: return createDiscipline();
      case ProcessDslPackage.ROLE: return createRole();
      case ProcessDslPackage.ARTIFACT: return createArtifact();
      case ProcessDslPackage.TASK: return createTask();
      case ProcessDslPackage.ROLE_ELEMENT: return createRoleElement();
      case ProcessDslPackage.ARTIFACT_ELEMENT: return createArtifactElement();
      case ProcessDslPackage.STEP: return createStep();
      case ProcessDslPackage.PHASE: return createPhase();
      case ProcessDslPackage.ITERATION: return createIteration();
      case ProcessDslPackage.ACTIVITY: return createActivity();
      case ProcessDslPackage.CHECKLIST: return createChecklist();
      case ProcessDslPackage.CHECK_ITEM: return createCheckItem();
      case ProcessDslPackage.CONCEPT: return createConcept();
      case ProcessDslPackage.EXAMPLE: return createExample();
      case ProcessDslPackage.GUIDELINE: return createGuideline();
      case ProcessDslPackage.PRACTICE: return createPractice();
      case ProcessDslPackage.REFERENCE: return createReference();
      case ProcessDslPackage.REPORT: return createReport();
      case ProcessDslPackage.ROADMAP: return createRoadmap();
      case ProcessDslPackage.TEMPLATE: return createTemplate();
      default:
        throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
    }
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Model createModel()
  {
    ModelImpl model = new ModelImpl();
    return model;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public br.ufrn.dimap.processDsl.Process createProcess()
  {
    ProcessImpl process = new ProcessImpl();
    return process;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Discipline createDiscipline()
  {
    DisciplineImpl discipline = new DisciplineImpl();
    return discipline;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Role createRole()
  {
    RoleImpl role = new RoleImpl();
    return role;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Artifact createArtifact()
  {
    ArtifactImpl artifact = new ArtifactImpl();
    return artifact;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Task createTask()
  {
    TaskImpl task = new TaskImpl();
    return task;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public RoleElement createRoleElement()
  {
    RoleElementImpl roleElement = new RoleElementImpl();
    return roleElement;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ArtifactElement createArtifactElement()
  {
    ArtifactElementImpl artifactElement = new ArtifactElementImpl();
    return artifactElement;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Step createStep()
  {
    StepImpl step = new StepImpl();
    return step;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Phase createPhase()
  {
    PhaseImpl phase = new PhaseImpl();
    return phase;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Iteration createIteration()
  {
    IterationImpl iteration = new IterationImpl();
    return iteration;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Activity createActivity()
  {
    ActivityImpl activity = new ActivityImpl();
    return activity;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Checklist createChecklist()
  {
    ChecklistImpl checklist = new ChecklistImpl();
    return checklist;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public CheckItem createCheckItem()
  {
    CheckItemImpl checkItem = new CheckItemImpl();
    return checkItem;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Concept createConcept()
  {
    ConceptImpl concept = new ConceptImpl();
    return concept;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Example createExample()
  {
    ExampleImpl example = new ExampleImpl();
    return example;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Guideline createGuideline()
  {
    GuidelineImpl guideline = new GuidelineImpl();
    return guideline;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Practice createPractice()
  {
    PracticeImpl practice = new PracticeImpl();
    return practice;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Reference createReference()
  {
    ReferenceImpl reference = new ReferenceImpl();
    return reference;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Report createReport()
  {
    ReportImpl report = new ReportImpl();
    return report;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Roadmap createRoadmap()
  {
    RoadmapImpl roadmap = new RoadmapImpl();
    return roadmap;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Template createTemplate()
  {
    TemplateImpl template = new TemplateImpl();
    return template;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ProcessDslPackage getProcessDslPackage()
  {
    return (ProcessDslPackage)getEPackage();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @deprecated
   * @generated
   */
  @Deprecated
  public static ProcessDslPackage getPackage()
  {
    return ProcessDslPackage.eINSTANCE;
  }

} //ProcessDslFactoryImpl
